package com.founder.devwork.persistence.gateway.gitlab.datasource;

/**
 * 抽象类：GitDataSource
 * <p>目的：抽象 GitLab 实例的配置，提供统一访问方式。作为 Gateway 的“数据源”，确保注入不同实例时 API 一致。
 * <p>设计原则：允许子类注入 yml 配置，实现多态支持多 GitLab 实例（如北京和成都）。
 * <p>参考：git-api-design.md 中的 DataSource 设计。
 */
public abstract class GitDataSource {

    /**
     * 获取 GitLab 主机地址。
     * @return 主机地址，例如 "172.18.71.178" 或 "git.jwzh.online"。
     */
    public abstract String getHost();

    /**
     * 获取 GitLab 端口。
     * @return 端口号，例如 8899 或 9091。
     */
    public abstract int getPort();

    /**
     * 获取访问 Token。
     * @return GitLab API 的私有 Token。
     */
    public abstract String getToken();

    /**
     * 获取基础 URL（默认实现）。
     * @return 组合后的基础 URL，例如 "http://host:port/api/v4"。
     */
    public String getBaseUrl() {
        return "http://" + getHost() + ":" + getPort() + "/api/v4";
    }
}
